/*******************************************************************************
 * Copyright (c) 2010 liw.
 * All rights reserved. 
 * 
 * This file is part of VanBus.
 * 
 *     VanBus is free software: you can redistribute it and/or modify
 *     it under the terms of the GNU General Public License as published by
 *     the Free Software Foundation, either version 3 of the License, or
 *     (at your option) any later version.
 * 
 *     VanBus is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 * 
 *     You should have received a copy of the GNU General Public License
 *     along with VanBus.  If not, see <http://www.gnu.org/licenses/>.
 * Contributors:
 *     liw - initial API and implementation
 ******************************************************************************/
package org.niclab.vanbus.query.command;

import java.util.ArrayList;
import java.util.Iterator;

public class CommandChain implements ICommandChain{
	
	
	private ArrayList<ICommand> chain;
	
	private int currentIndex;

	public CommandChain(){
		chain = new ArrayList<ICommand>();
		currentIndex=0;
	}
	
	@Override
	public void execute(Object input) {
		if(currentIndex<chain.size()){
			ICommand nextCmd = chain.get(currentIndex);
			currentIndex++;
			nextCmd.execute(input, this);
		
		}
		
	}
	
	
	public void addCommand(ICommand cmd){
		chain.add(cmd);
		
	}
	
	public void removeCommand(ICommand cmd){
		Iterator itr = chain.iterator();
		while(itr.hasNext()){
			if(itr.next().equals(cmd))
				itr.remove();
		}
	
			
		
	}
	
	

}
